/* 自定义指令

1.指令定义时不加v-，但使用时要加v-；
2.指令名如果是多个单词，要使用kebab-case命名方式，不要用camelCase命名。

(1).bind：指令与元素成功绑定时调用。
(2).inserted：指令所在元素被插入页面时调用。
(3).update：指令所在模板结构被重新解析时调用。
-=>（完整）
inserted：被绑定元素插入父节点时调用 (仅保证父节点存在，但不一定已被插入文档中)。
bind：只调用一次，指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
update: 所在组件的 VNode 更新时调用，但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变，也可能没有。
       但是你可以通过比较更新前后的值来忽略不必要的模板更新。
componentUpdated：指令所在组件的 VNode 及其子 VNode 全部更新后调用。
unbind：只调用一次，指令与元素解绑时调用。

钩子函数参数
el：指令所绑定的元素，可以用来直接操作 DOM。
binding：一个对象，包含以下 property：
name：指令名，不包括 v- 前缀。
value：指令的绑定值，例如：v-my-directive=“1 + 1” 中，绑定值为 2。
oldValue：指令绑定的前一个值，仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
expression：字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中，表达式为 “1 + 1”。
arg：传给指令的参数，可选。例如 v-my-directive:foo 中，参数为 “foo”。
modifiers：一个包含修饰符的对象。例如：v-my-directive.foo.bar 中，修饰符对象为 { foo: true, bar: true }。
vnode：Vue 编译生成的虚拟节点。
oldVnode：上一个虚拟节点，仅在 update 和 componentUpdated 钩子中可用。

全局注册
app.directive('xxx',{})
支持动态指令参数
v-xx:[abc]='xxx'
参数说明
第一个参数 为绑定的元素
第二个参数 为传递的对象
.arg 绑定的参数
.value 等号后对应的值

eg:
<span v-big-number="n"></span>
//写法1（常用）
 directives: {
  'big-number'(element,binding){//element：元素，binding:绑定的属性
    element.innerText = binding.value * 10
  }
}
//写法2
 directives: {
  'big-number':{
    bind(element,binding){//element：元素，binding:绑定的属性
      element.innerText = binding.value * 10
    },
    unbind(el,binding){

    }
}
//完整写法
directives:{
        fbind:{
          // 指令与元素成功绑定时（一上来）
          bind(element,binding){
            element.value = binding.value
          },
          // 指令所在元素被插入页面时
          inserted(element,binding){
            element.focus()
          },
          // 指令所在的模板被重新解析时
          update(element,binding){
            element.value = binding.value
          }
        }
      }
    }
*/